import {useUserStore} from '@/stores/userStore.js'
const baseURL = 'http://localhost:8888'
//添加拦截器
const httpInterceptor = {
	//拦截前触发
	invoke(options){
		// 非 http 开头需拼接地址
		if (!options.url.startsWith('http')) {
		  options.url = baseURL + options.url
		}
		// 请求超时, 默认 60s
		options.timeout = 10000
		const userStore = useUserStore()
		if(!options.header){
			options.header={}
			if(userStore.userInfo && userStore.userInfo.chatToken){
				options.header.chatToken = userStore.userInfo.chatToken
			}
		}
	}
}
// 添加拦截器
uni.addInterceptor('request', httpInterceptor)

// 封装请求
export const http = (options) => {
	// 返回Promise对象
	return new Promise((resolve,reject) => {
		uni.request({
		...options,
		//响应成功
		success(res){
			 if (res.statusCode >= 200 && res.statusCode < 300) {
			  // 提取核心数据 res.data
			  resolve(res.data)
			 }else if(res.statusCode === 401 || res.statusCode === 400){ //未登入或登入过期跳转到登入页
				 // 清楚用户信息
				 const userStore = useUserStore()
				 userStore.clearUserInfo()
				 uni.navigateTo({ url: '/pages/login/login' })
				 reject(res)
			 }else{
				uni.showToast({
					 icon: 'none',
					 title: res.data.msg || '请求错误',
				})
			 }
			 if(res.data.code != 200){
				 uni.showToast({
				 	 icon: 'none',
				 	 title: res.data.msg || '请求错误',
				 })
			 }
		},
	   // 响应失败
	   fail(err) {
		uni.showToast({
		  icon: 'none',
		  title: '网络错误，换个网络试试',
		})
		reject(err)
	  },
		})
	})
}
